#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <unordered_set>
#include <algorithm>
#define int long long 
const int  N = 110;
int q[N];
using namespace std;
int gcd(int a, int b) {
	return b > 0 ? gcd(b, a % b) : a;
}
void solve()
{
	int n;
	cin >> n;
	bool odd = false;
	bool even = false;
	for (int i = 0; i < n; i++)
	{
		cin >> q[i];
		if (q[i] & 1)
			even = true;
		else odd = true;
	}
	/*int ret = q[0];
	for (int i = 1; i < n; i++)
	{
		ret = gcd(ret, q[i]);
	}

	if (odd && !even)
	{
		cout << 2 * ret << endl;
		return;
	}*/
	int ans;
	int ma = *max_element(q, q + n);
	for (int i = 0; i < 64; i++)
	{
		if (1 << i > ma)
			break;

		bool x = false, y = false;
		for (int j = 0; j < n; j++)
		{
			if (q[j] >> i & 1) x = true;
			else y = true;
		}
		if (x && y)
		{
			ans = 1 << (i + 1);
			break;
		}
		//cout << endl;
	}

	cout << ans << endl;
	// int ans = q[0];
	// for(int i = 1;i < n;i ++)
	// {
	// 	ans = gcd(ans ,q[i]);
	// }
	// if(odd && even)
	// 	cout << 2 << endl;
	// else
	// {
	// 	if(even)
	// 	{
	// 		int ans = 2;
	// 		bool flag = true;
	// 		while(flag)
	// 		{
	// 			int a = q[0] % ans;
	// 			for(int i = 1;i < n;i ++)
	// 				if(q[i] % ans != a)
	// 				{
	// 					flag = false;
	// 					break;
	// 				}
	// 			if(flag)
	// 			ans *= 2;
	// 		}

	// 		cout << ans << endl;
	// 	}
	// 	else cout << 2 * ans << endl;

	// }
}

signed main()
{
	int t;
	cin >> t;
	while (t--)
		solve();
	return 0;
}